package com.yc.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.yc.entity.Feedback;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * 投诉和建议表;(feedback)表数据库访问层
 * @date : 2023-6-28
 */
@Mapper
public interface FeedbackMapper  extends BaseMapper<Feedback> {
    /**
     * 分页查询指定行数据
     *
     * @param page 分页参数
     * @param wrapper 动态查询条件
     * @return 分页对象列表
     */
    IPage<Feedback> selectByPage(IPage<Feedback> page , @Param(Constants.WRAPPER) Wrapper<Feedback> wrapper);
    /**
     * 添加投诉内容(正式
     *
     * @param stuid 学生学号
     * @param description 投诉内容
     * @param state 匿名状态
     * @param filepath 文件地址
     */
    @Insert("insert into feedback (stuid,description,evidence,state,updateTime,createTime,updateBy,createBy,readornot) values (#{stuid},#{description},#{evidence},#{state},now(),now(),#{id},#{id},0)")
    void insert(@Param("stuid") String stuid,
                @Param("description") String description,
                @Param("evidence") String filepath,
                @Param("state") int state,
                @Param("id") String id);

    /**
     * 查找学生id
     * @param stuid
     * @return
     */
    @Select("SELECT id FROM student_info WHERE stuid=#{stuid}")
    String selectidbystuid(@Param("stuid") String stuid);

    /**
     * 添加投诉内容(测试
     *
     * @param stuid 学生学号
     * @param description 投诉内容
     * @param state 匿名状态
     */
    @Insert("insert into feedback (stuid,description,state) values (#{stuid},#{description},#{state})")
    void insertSuggesttest(@Param("stuid") String stuid,@Param("description") String description,@Param("state") int state);

    /**
     * 查询学生姓名
     *
     * @return 学生姓名列表
     */
    @Select("SELECT b.state,a.sname,b.id,c.cname,b.createTime,b.readornot FROM student_info a, feedback b, class_info c WHERE a.stuid = b.stuid AND a.cid = c.id order by b.id desc")
    List<Map<String,Object>> selectstuname();

    /**
     * 通过id查询投诉
     *
     * @param id
     * @return
     */
    @Select("SELECT a.description,a.evidence,createTime FROM feedback a WHERE id=#{id}")
    Map<String,Object> selectfeedbacklist(@Param("id") int id);

    /**
     * 修改是否已读
     * @param id
     */
    @Insert("update feedback set readornot = 4 where id=#{id}")
    void insertreadornot(@Param("id") int id);
}
